<?php  if (!defined('BASEPATH')) exit('No direct script access allowed');

/**
 * Помошник для работы с контентом
 * Создан для оптимизации
 * 
 * @package CoreFramework
 * @version 1.0
 * @author Gennadiy Kozlenko
 */

/**
 * Получение пути к странице
 *
 * @param array $item
 * @return string
 */
function get_url(&$item) {
   $obj =& get_instance();
   $url = '';
   if ('yes' == $item['is_default']) {
      $url = base_url();
   } elseif ($item['link']) {
      // Ссылающаяся страница
      $url = $item['link'];
   } else {
      // Контент
      // Получаем список всех контентов для построение дерева и построения пути до текущего элемента
      $tree = array();
      if (!$obj->registry->exists('menu_tree_' . $item['id_menu'])) {
         $sql = "
            SELECT
               id_content,
               id_parent,
               name,
               status
            FROM
               " . $obj->db->dbprefix('contents') . "
            WHERE
               id_menu = " . $obj->db->escape($item['id_menu']) . " AND
               link = ''
            ORDER BY
               position ASC
         ";
         $query = $obj->db->query($sql);
         // Строим дерево
         $obj->load->helper('tree');
         $tree = array_tree($query->result_array(), 'id_content', 'id_parent');
         $obj->registry->save('menu_tree_' . $item['id_menu'], $tree);
      } else {
         $tree = $obj->registry->load('menu_tree_' . $item['id_menu']);
      }
      // Собираем нужную ветвь дерева в урл
      $url = base_url() . 'page/' . tree_path($tree, 'id_content', 'name', $item['id_content'], '/') . '.html';
   }
   return $url;
} // end get_url

/**
 * Функция получения краткого описания контента
 *
 * @param string $content
 * @return string
 */
function get_abstract(&$content, $length = 500) {
   $obj =& get_instance();
   $obj->load->helper('text');
   $abstract = '';
   if (false !== ($pos = mb_strpos($content, '<!-- pagebreak -->', 0, $obj->config->item('charset')))) {
      $abstract = strip_tags(mb_substr($content, 0, $pos, $obj->config->item('charset')), '<p><b><i><strong><em><a>');
      // TODO: Нужно будет реализовать автозакрытие тегов
   } else {
      $abstract = character_limiter(strip_tags($content), $length);
   }
   return $abstract;
}
